/**中间件的五个使用注意事项
 * 1.一定要在路由之前注册中间件(按顺序执行，错误级别中间件除外)
 * 2.客户端发过来的请求，可以连续调用多个中间件进行处理
 * 3.执行完中间件后，要记得调用next()方法，否则请求不会传递到路由
 * 4.为了防止代码逻辑的混乱，next()方法后不要再写额外代码
 * 5.联系调用多个中间件时，多个中间件之间，共享req和res对象
 */


const express =  require('express')
const server = express()

// 创建一个最简单的中间件
// const mw = function(res,req,next){
//     console.log('请求经过了中间件')
    
//     // 经过中间件后再根据路径、方法匹配相应路由
//     next()
// }

// 全局生效的中间件
// server.use(mw)

// 简化的全局中间件,直接在use内填入中间件函数
// 中间件的作用是在请求上游为req或res添加对象添加自定义属性或方法，供下游中间件或者路由使用（req和res是共享的）
server.use(function(req,res,next){
    console.log('简化的中间件')
    const time = Date.now()
    req.startTime = time
    next()
})

// 使用多个中间件，会按先后顺序执行
server.use(function(req,res,next){
    console.log('第二个中间件')
    next()
})

server.get('/user',(req,res)=>{
    res.send('get request'+'    '+'start time:'+req.startTime)
})
server.post('/data',(req,res)=>{
    res.send('post request'+'    '+'start time:'+req.startTime)
})

server.listen(80,()=>{
    console.log('http://127.0.0.1')
})